作为 TJ 的首个创业项目,Apex Ping在一些硬核的人眼里,或者从更深层次的技术角度上讲,可能有时会觉得有些失望,但是从美学和 UI 方面来谈,也许能让人眼前一亮。
从 16 年 4 月 23 日在 Medium 上发声说「我要成立自己的公司啦:Apex Software」到 6 月 17 日正式宣布并上线第一个 APM 模块 Apex Ping,我也在 Medium 和 Twitter 上时刻跟踪动态。并且在第一时间试用了一下 Apex Ping,总体来说体验可以,前端方面使用 React + D3 做数据可视化,后端则是使用 AWS 的 Lambda,并且他们也开源了一些工具。
当然,以 TJ 的水准,UI 上保持优雅的作风,自然不用多说。
Time Status 很有意思,包括:
- DNS 解析时间 (
NAME LOOKUP
) - 连接建立时间 (
CONNECT
) - TLS 握手时间 (
TLS HANDSHAKE
) - TTFB (
FIRST BYTE
) - 响应时间(
RESPONSE
) - 重定向时间(
REDIRECTS
)
看的出来,思路大致类似。
之前简单实现了下,封装成 API。相比于命令行,网页版自然要好用得多,配合前端数据可视化对于经常要分析性能的人会非常方便。思路则是调 CURL 命令然后解析一下结果,处理一下数据,这里用的是 PHP。
CURL 的几个关键参数和输出倒是比较有意思,各种时间一目了然:
"time_namelookup"
"time_connect"
"time_appconnect"
"time_pretransfer"
"time_redirect"
"time_starttransfer"
"time_total"
"speed_download"
"speed_upload"
相关计算方式如下:
1 | //TCP 连接时间 |
最终 API 结果:
当然,这里也推荐另一款工具 Python 版的 httpStat 工具:
全程命令行,还不错,很好用。